﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using DAL;
using BOL;
using System.Data.Linq;
using System.Data.SqlClient;
using Website.Logger;


namespace UILGestion.Control
{
    public partial class menuObraCtrl : System.Web.UI.UserControl
    {
        

        public void loadMenu(int idObra, string url)
        {
            
            
            // mostrar el rol segu obra

            //int idEmpleadoEmisor = int.Parse(System.Web.HttpContext.Current.Session["idEmpleado"].ToString());
            //var qq= from a in DbUtil.Db.EmpleadoObra
            //       where a.idEmpleado==idEmpleadoEmisor & a.idObra==idObra
            //       select a;

            //if (qq.Count()==0)
            //{
            //    throw new Exception("No tiene permisos en la Obra");
            //}

            //EmpleadoObra empleadoObra=qq.First();
            //rolObra = empleadoObra.Rol;
            //rolLabel.Text = rolObra.descripcion;


            //var r = from a in DbUtil.Db.RolFormularios
            //        where a.idRol==rolObra.idInternal
            //        select a.idFormulario;


            
            
            // segun los formularios que tiene acceso


            var q = from a in DbUtil.Db.Menus
                    where a.idAplicacion == 2 
                   // &&                    r.Contains(a.idFormulario.Value)
                    select a;

            // mostramos solo el menu al cual tiene acceso


            foreach (var item in q)
            {

                //esta condicion indica q son elementos padre.

                if (item.idInternal.Equals(item.idpadre))
                {

                    MenuItem mnuItem = new MenuItem();
                    mnuItem.Value = item.idInternal.ToString();
                    mnuItem.Text = item.descripcion;
                    mnuItem.ImageUrl = item.icono;
                    mnuItem.NavigateUrl = item.url + "?idObra=" + idObra.ToString();
                    // 'agregamos el Ítem al menú
                    ObraAdminMenu.Items.Add(mnuItem);
                    //'hacemos un llamado al metodo recursivo encargado de generar el árbol del menú.

                    AddMenuItem(mnuItem, q,idObra);
                }


            }

            //// verificamos el formulario, si tiene acceso
            //var w= from a in q
            //       where a.url==url
            //       select a;

            //if (w.Count() == 0)
            //{
            //    throw new Exception("Usted no tiene acceso a  esta pagina");
            //}
             

        }

        private void AddMenuItem(MenuItem mnuMenuItem,
                                                 IQueryable<DAL.Menu> menuList,int idObra)
        {

            foreach (var item in menuList)
            {
                if ((item.idpadre.ToString().Equals(mnuMenuItem.Value)) &&
                     (item.idInternal != item.idpadre))
                {
                    MenuItem mnuNewMenuitem = new MenuItem();


                    mnuNewMenuitem.Value = item.idInternal.ToString();
                    mnuNewMenuitem.Text = item.descripcion;
                    mnuNewMenuitem.ImageUrl = item.icono;
                    mnuNewMenuitem.NavigateUrl = item.url+"?idObra="+idObra.ToString();
                    //'Agregamos el Nuevo MenuItem al MenuItem que viene de un nivel superior.
                    mnuMenuItem.ChildItems.Add(mnuNewMenuitem);

                    //'llamada recursiva para ver si el nuevo menú ítem aun tiene elementos hijos.
                    AddMenuItem(mnuNewMenuitem, menuList,idObra);

                }


            }



        }



    }
}